@getMetaKeywords[sText][tKeyword;hKeyword;tKey]
$sText[^sText.lower[]]
# удаляем тэги
$sText[^sText.match[<.*?>|&.*?^;][g]{ }]
# выбираем все слова
$tKeyword[^sText.match[([\w\-]+)][g]]
# удаляем слова короче 3-х букв
$tKeyword[^tKeyword.select(^tKeyword.1.length[] > 3)]
# сортируем по длине
^tKeyword.sort(^tKeyword.1.length[])
# собираем уникальные корни слов
$hKeyword[^tKeyword.hash{^tKeyword.1.left(5)}[$.distinct[tables]]]
$tKey[^hKeyword._keys[]]
# сортируем слова по частоте
^tKey.sort($hKeyword.[$tKey.key])[desc]
# отбираем первые 20 слов
$tKey[^table::create[$tKey;$.limit(20)]]
# перечисляем через пробел
$result[^tKey.menu{$hKeyword.[$tKey.key].1}[ ]]

@getMetaDescription[sText][tMatch]
# удаляем тэги
$sText[^sText.match[<.*?>|&.*?^;][g]{ }]
# берём кусок не длиннее 200 знаков
$tMatch[^sText.match[^^(.{1,200}[\.\?!])]]
$result[$tMatch.1]